<?php

/*
  Plugin Name: Custom posts
  Plugin URI: http://akismet.com/
  Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/?return=true">Sign up for an Akismet API key</a>, and 3) Go to your <a href="plugins.php?page=akismet-key-config">Akismet configuration</a> page, and save your API key.
  Version: 2.5.3
  Author: Automattic
  Author URI: http://automattic.com/wordpress-plugins/
  License: GPLv2 or later
 */
require_once 'cuspo_autoload.php';
require_once 'cuspo_config.php';
spl_autoload_register("cuspo_autoload");

/* @var $debug UDebug_cuspo */
global $debug;
$debug = USingleton_cuspo::getInstances("UDebug_cuspo");

register_activation_hook(__FILE__, 'cuspo_install');
register_deactivation_hook(__FILE__, "cuspo_uninstall");
//sessioni
add_action('init', 'cuspo_session');

//eventi
add_action('admin_menu', 'cuspo_menu');
add_action('init', 'cuspo_operation');
add_action("init", "enqueue_styles");
add_action("admin_print_styles", "enqueue_styles");


//shortcodes
add_shortcode('cuspo_show_elements', 'cuspo_show_elements');
add_shortcode('cuspo_show_facebook', 'cuspo_show_facebook');
add_shortcode('cuspo_get_claim', 'cuspo_get_claim');
add_shortcode('cuspo_get_full_post', 'cuspo_get_full_post');
add_shortcode('cuspo_slider', 'cuspo_slider');

//ajax

/*
 * Installa cuspo
 */

function cuspo_install() {
  /* @var $inst CInstallation_cuspo */
  $inst = USingleton_cuspo::getInstances("CInstallation_cuspo");
  $inst->installConcorsi();
  $inst->installCorsi();
  $inst->installServizi();
  $inst->installLavori();
  $inst->installFacebook();
}

/**
 * Inizializza la sessione
 */
function cuspo_session() {
  $inst = USingleton_cuspo::getInstances("CInstallation_cuspo");
  if (!session_id())
    session_start();
  ini_set('display_errors',1);
}

function cuspo_menu() {
  if (current_user_can('administrator')) {
    add_menu_page('Servizi Offerti', "Servizi Offerti", "administrator", servizi_offerti, 'servizi_offerti');
    add_submenu_page(servizi_offerti, 'Modifica Servizi Offerti', "Modifica Servizi Offerti", "administrator", servizi_offerti_edit, 'servizi_offerti_edit');
    add_menu_page('Corsi', "Corsi", "administrator", corsi, 'corsi');
    add_submenu_page(corsi, 'Modifica Corsi', "Modifica Corsi", "administrator", corsi_edit, 'corsi_edit');
    add_menu_page('Concorsi', "Concorsi", "administrator", concorsi, 'concorsi');
    add_submenu_page(concorsi, 'Modifica Concorsi', "Modifica Concorsi", "administrator", concorsi_edit, 'concorsi_edit');
    add_menu_page('News', "News", "administrator", news, 'news');
    add_submenu_page(news, 'Modifica News', "Modifica News", "administrator", news_edit, 'news_edit');
    add_menu_page('Lavoro', "Lavoro", "administrator", lavoro, 'lavori');
    add_submenu_page(lavoro, 'Modifica Lavori', "Modifica Lavori", "administrator", lavori_edit, 'lavori_edit');
    add_menu_page('Facebook in home', "Facebook in home", "administrator", facebook, 'facebook');
    add_submenu_page(facebook, 'Modifica post facebook', "Modifica post facebook", "administrator", facebook_edit, 'facebook_edit');
    add_menu_page('Slider', "Slider", "administrator", slider, 'slider');
  }
  if (current_user_can('editor')) {
    add_menu_page('Servizi Offerti', "Servizi Offerti", "editor", servizi_offerti, 'servizi_offerti');
    add_submenu_page(servizi_offerti, 'Modifica Servizi Offerti', "Modifica Servizi Offerti", "editor", servizi_offerti_edit, 'servizi_offerti_edit');
    add_menu_page('Corsi', "Corsi", "editor", corsi, 'corsi');
    add_submenu_page(corsi, 'Modifica Corsi', "Modifica Corsi", "editor", corsi_edit, 'corsi_edit');
    add_menu_page('Concorsi', "Concorsi", "editor", concorsi, 'concorsi');
    add_submenu_page(concorsi, 'Modifica Concorsi', "Modifica Concorsi", "editor", concorsi_edit, 'concorsi_edit');
    add_menu_page('News', "News", "editor", news, 'news');
    add_submenu_page(news, 'Modifica News', "Modifica News", "editor", news_edit, 'news_edit');
    add_menu_page('Lavoro', "Lavoro", "editor", lavoro, 'lavori');
    add_submenu_page(lavoro, 'Modifica Lavori', "Modifica Lavori", "editor", lavori_edit, 'lavori_edit');
    add_menu_page('Facebook in home', "Facebook in home", "editor", facebook, 'facebook');
    add_submenu_page(facebook, 'Modifica post facebook', "Modifica post facebook", "editor", facebook_edit, 'facebook_edit');
    add_menu_page('Slider', "Slider", "editor", slider, 'slider');

    remove_menu_page("edit.php");
    remove_menu_page("upload.php");
    remove_menu_page("link-manager.php");
    remove_menu_page("edit-comments.php");
    remove_menu_page("tools.php");
    remove_menu_page("edit.php?post_type=page");
    remove_menu_page("wpcf7");
  }
}

function servizi_offerti() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  echo $controller->getFormInsertPost("servizio");
}

function corsi() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  echo $controller->getFormInsertPost("corso");
}

function lavori() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  echo $controller->getFormInsertPost("lavoro");
}

function concorsi() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  echo $controller->getFormInsertPost("concorso");
}

function slider() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CSlider_cuspo");
  echo $controller->getFormInsertSlider();
}

function facebook() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CFacebook_cuspo");
  echo $controller->getFormInsertFacebook();
}

function news() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  echo $controller->getFormInsertPost("news");
}

function facebook_edit() {
  /* @var $controller CFacebook_cuspo */
  $controller = USingleton_cuspo::getInstances("CFacebook_cuspo");
  /* @var $view View_cuspo */
  $view = USingleton_cuspo::getInstances("View_cuspo");
  $post_id = $view->getRequest("post_id");
  echo $controller->getEditFacebookForm($post_id);
}

function servizi_offerti_edit() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  /* @var $view View_cuspo */
  $view = USingleton_cuspo::getInstances("View_cuspo");
  $post_id = $view->getRequest("post_id");
  echo $controller->getEditPostForm("servizio", $post_id);
}

function lavori_edit() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  /* @var $view View_cuspo */
  $view = USingleton_cuspo::getInstances("View_cuspo");
  $post_id = $view->getRequest("post_id");
  echo $controller->getEditPostForm("lavoro", $post_id);
}

function news_edit() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  /* @var $view View_cuspo */
  $view = USingleton_cuspo::getInstances("View_cuspo");
  $post_id = $view->getRequest("post_id");
  echo $controller->getEditPostForm("news", $post_id);
}

function corsi_edit() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  /* @var $view View_cuspo */
  $view = USingleton_cuspo::getInstances("View_cuspo");
  $post_id = $view->getRequest("post_id");
  echo $controller->getEditPostForm("corso", $post_id);
}

function concorsi_edit() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  /* @var $view View_cuspo */
  $view = USingleton_cuspo::getInstances("View_cuspo");
  $post_id = $view->getRequest("post_id");
  echo $controller->getEditPostForm("concorso", $post_id);
}

/**
 * Recupera l'operazione da effettuare e la esegue
 */
function cuspo_operation() {

  global $config_cuspo;
  $view = USingleton_cuspo::getInstances("View_cuspo");
  $controller = USingleton_cuspo::getInstances("Controller_cuspo");
  $operation = $view->getOperation($config_cuspo['operation']);
  if ($operation != false)
    $controller->executeOperation($operation);
  else
    return;
}

/**
 * Ritorna una lista dei post formattata. Shortcode relativo: [cuspo_show_elements nr_posts = "100" type="{servizi,corsi,concorsi}"]
 * @return la lista dei post formattata
 */
function cuspo_show_elements($atts) {
  extract(shortcode_atts(array(
              'nr_posts' => '1000',
              "type" => ""
                  ), $atts));
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  $return = $controller->showPosts($nr_posts, $type);
  return $return;
}

/**
 * Ritorna una lista dei post formattata. Shortcode relativo: [cuspo_show_facebook nr_posts = "2"]
 * @return la lista dei post formattata
 */
function cuspo_show_facebook($atts) {
  extract(shortcode_atts(array(
              'nr_posts' => '2'
                  ), $atts));
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CFacebook_cuspo");
  $return = $controller->showFacebook($nr_posts);
  return $return;
}

function get_edit_form() {
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  $post_id = (int) $_POST['id'];
  $edit_name = $_POST['edit_name'];
  $controller->getEditPostForm($edit_name, $post_id);
}

/**
 * Ritorna il claim di una certa pagina. Lo Shortcode relativo: [cuspo_get_claim which='{concorsi,news}']
 * @return string
 */
function cuspo_get_claim($atts) {
  extract(shortcode_atts(array(
              'which' => ''
                  ), $atts));
  /* @var $controller CCustomposts_cuspo */
  $controller = USingleton_cuspo::getInstances("CCustomposts_cuspo");
  $return = $controller->getClaim($which);
  return $return;
}

function cuspo_slider(){
  /* @var $controller CSlider_cuspo */
  $controller = USingleton_cuspo::getInstances("CSlider_cuspo");
  $return = $controller->getSlider();
  return $return;
}

function enqueue_styles() {
  global $debug;
  wp_enqueue_style("cuspo_jpaginate",site_url()."/wp-content/plugins/custom-posts/templates/css/jpaginate.css");
  wp_enqueue_style("cuspo_custom_editor",site_url()."/wp-content/plugins/custom-posts/templates/css/custom_editor.css");
}




?>